package net.suplementos.web.action;

import java.util.List;

import net.suplementos.negocio.ControleDelegate;
import net.suplementos.pojo.Produto;
import net.suplementos.servico.ControleServico;
import net.suplementos.web.LocalConstantes;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;

import com.opensymphony.xwork2.ActionSupport;

@Namespace("/pesquisarProduto")
@InterceptorRefs({
	@InterceptorRef(value = "store", params = { "operationMode", "AUTOMATIC" }), 
	@InterceptorRef("defaultStack") 
})
public class PesquisarProdutoAction extends ActionSupport {

	private ControleServico controleServico = ControleDelegate.getInstance();

	private Produto produto;
	private List<Produto> resultadoConsulta;

	private static final String FORWARD_REALIZAR_VENDA = "realizarVenda";

	private String origem = "";
	
	@Action(value = "abrirPesquisar", results = { 
		@Result(name = SUCCESS, location = LocalConstantes.LOCAL_JSP_CONTROLE_PESQUISAR_PRODUTO + "/pesquisar.jsp") 
	})
	public String abrirPesquisar() throws Exception {
		return SUCCESS;
	}

	@Action(value = "pesquisar", 
		results = { 
			@Result(name = SUCCESS, location = LocalConstantes.LOCAL_JSP_CONTROLE_PESQUISAR_PRODUTO + "/pesquisar.jsp"),
			@Result(name = FORWARD_REALIZAR_VENDA, 
				params = {"actionName", "abrirPesquisar", "namespace", "/selecionarProduto"}, 
				type = "redirectAction")
		}
	)
	public String pesquisar() throws Exception {
		setResultadoConsulta(controleServico.consultarProdutosAtivos(getProduto()));

		if (getOrigem().trim().equals("popup")) {
			return FORWARD_REALIZAR_VENDA;
		}
		return SUCCESS;
	}

	public String getOrigem() {
		return origem;
	}

	public void setOrigem(String origem) {
		this.origem = origem;
	}

	public Produto getProduto() {
		return produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	public List<Produto> getResultadoConsulta() {
		return resultadoConsulta;
	}

	public void setResultadoConsulta(List<Produto> resultadoConsulta) {
		this.resultadoConsulta = resultadoConsulta;
	}
}